<!--
/*----------------------------------------------------------------------------
* body부의 html을 자동 페이징 처리하여 출력에 적합한 형태로 가공한다.
*	주의) 페이지번호 출력을 원한다면
*		"<span id='jpvKCPageNo'></span>번째 장 / 총 <span id='jpvKTPageNo'></span> 장" 과 같이
*	페이지번호가 입력될 공간을 만들어주고
*		jpviewer.cPageId	= "jpvCPageNo";
*		jpviewer.tPageId	= "jpvTPageNo";
*	로 해당 element id를 명시하여 주어야 한다.
*
*
*		1. content에서 명시적으로 페이지 바꿈처리 시에는 <page> 삽입
*		2. td의 크기의 일관성을 유지하기 위해 COL,COLGROUP tag를 이용하여 width를 주는것이 바람직하다.
*
*
*	ex)
*		var jpviewer			= null;
*		function printStart(){
*			jpviewer			= new JPrintViewer();
*			jpviewer.content	= "jpvContent";
*		//	jpviewer.spTag		= "/TR/";
*			jpviewer.name		= "jpviewer";
*			jpviewer._err		= false;
*			jpviewer.viewPageNo	= true;
*			jpviewer.pageStyle	= "border:4px double #000000";
*			jpviewer.pageHeight	= 940;
*			jpviewer.pageWidth	= 670;
*			jpviewer.maxPageNo	= 30;
*			jpviewer.cPageId	= "jpvCPageNo";
*			jpviewer.tPageId	= "jpvTPageNo";
*			jpviewer.kCPageId	= "jpvKCPageNo";
*			jpviewer.kTPageId	= "jpvKTPageNo";
*
*			jpviewer.header		= "<table><tr><td><span id='jpvKCPageNo'></span>번째 장 / 총 <span id='jpvKTPageNo'></span> 장</td></tr></table>";
*			jpviewer.footer		= "<table><tr><td>하단죄측</td><td><span id='jpvCPageNo'></span> / <span id='jpvTPageNo'></span></td><td>하단우측</td></tr></table>";
*
*			jpviewer.start();
*
*		}
*
*@author  이완근
*@date  2008.08.19
*
*
*	<<필요 library>> : JPrototype.js /
*
*
----------------------------------------------------------------------------*/

//페이지 넘김용 스타일
document.write("<style type='text/css'><!-- BR.jpvbreakhere {page-break-before: always} --></style>");

function JPrintViewer(){
	//JPrintViewer 로 페이징 처리할 객체명
	this.content			= "jpvContent";
	//페이지 overflow를 체크할 기준 tag명
	this.spTag				= "/TR/";

	//강제적으로 페이지를 넘기는 태그(변경불가~!!)
	this.jpvBreakTag		= "<page>";
	//JPrintViewer 객체명
	this.name				= "jPrinter";
	//에러메세지 출력 여부
	this._err				= false;
	//페이지번호 출력 여부
	this.viewPageNo			= true;
	//프린팅 페이지 스타일(최외곽 테이블)
	this.pageStyle			= "border:4px double #000000";
	//출력 페이지 높이
	this.pageHeight			= 940;
	//출력 페이지 넓이
	this.pageWidth			= 670;
	//출력 최대 페이지 수
	this.maxPageNo			= 20;

	//제거하지 않을 element 명
	this.notRemoveTag		= "/COL/COLGROUP/";
	//제거하지 않을 속성 명
	this.notRemoveAttribute	= "ROWSPAN";

	//페이지 헤더부 전체로 들어갈 html
	this.header				= "";
	//페이지 하단부 전체로 들어갈 html
	this.footer				= "";

	//한국어 서수형의 페이지 번호(뒤에 "번째"라는 문구 필요)
	this.pageStrArr		= new Array(
								"첫","두","세","네","다섯","여섯","일곱","여덟","아홉"
								,"열","열한","열두","열세","열네","열다섯","열여섯","열일곱","열여덟","열아홉","스무"
								,"스물한","스물두","스물세","스물네","스물다섯","스물여섯","스물일곱","스물여덟","스물아홉","서른"
								,"서른한","서른두","서른세","서른네","서른다섯","서른여섯","서른일곱","서른여덟","서른아홉","마흔"
								,"마흔한","마흔두","마흔세","마흔네","마흔다섯","마흔여섯","마흔일곱","마흔여덟","마흔아홉","쉰"
								,"쉰한","쉰두","쉰세","쉰네","쉰다섯","쉰여섯","쉰일곱","쉰여덟","쉰아홉","예순"
								,"예순한","예순두","예순세","예순네","예순다섯","예순여섯","예순일곱","예순여덟","예순아홉","이른"
								,"이른한","이른두","이른세","이른네","이른다섯","이른여섯","이른일곱","이른여덟","이른아홉","여든"
								,"여든한","여든두","여든세","여든네","여든다섯","여든여섯","여든일곱","여든여덟","여든아홉","아흔"
								,"아흔한","아흔두","아흔세","아흔네","아흔다섯","아흔여섯","아흔일곱","아흔여덟","아흔아홉","백"
							);


	//해당페이지번호(아라비아 숫자형)가 삽입될 element id
	this.cPageId		= "jpvCPageNo";
	//전체페이지수(아라비아 숫자형)가 삽입될 element id
	this.tPageId		= "jpvTPageNo";

	//해당페이지번호(한글 서수형)가 삽입될 element id
	this.kCPageId		= "jpvKCPageNo";
	//전체페이지수(한글 서수형)가 삽입될 element id
	this.kTPageId		= "jpvKTPageNo";
	//출력폼 작성시 제거할 출력시작 버튼id
	this.rmBtn			= "jpvPrintBtn";

	//페이지 넘김용 <p>태그
	this.pageBreak	= "\n<br id='jpv' class='jpvbreakhere'>";

	//현재 작업중인 페이지 번호
	this.pageNo		= 1;


	//현재 작업중인 페이지의 최외곽 div
	this.cDiv		= null;
	//content가 임시적으로 보관될 공간
	this.jpvTempDiv	= null;
	//content가 출력포멧으로 저장될 공간
	this.jpvRealDiv	= null;
	//rowspan처리를 위한 공간
	this.jpvRowspanObj	= new Object();

	//작업중 프로세스 진행 bar
	this.progressStr="<div id='jpvProgress' style='background-color:#FFFFFF;position:absolute;top:200;left:"+ (((document.body.clientWidth-300)/2)) +";filter:Alpha(Opacity=80);'>"
					+"	<table width='300' height='40' border='0' cellspacing='0' cellpadding='0'>"
					+"	<tr>"
					+"	<td width='4' rowspan='3' bgcolor='#3399FF'></td>"
					+"	<td width='40' bgcolor='#3399FF' height='5'></td>"
					+"	<td width='3'></td>"
					+"	<td width='185' bgcolor='#99CCFF'></td>"
					+"	<td width='4' rowspan='3' bgcolor='#99CCFF'></td>"
					+"	</tr>"
					+"	<tr>"
					+"	<td colspan='3'>"
					+"		<table width='100%' border='0' cellspacing='0' cellpadding='0'>"
					+"		<tr>"
					+"		<td height='10'></td>"
					+"		<td></td>"
					+"		<td></td>"
					+"		</tr>"
					+"		<tr height='25'>"
					+"		<td width='15'></td>"
					+"		<td style='font-family:돋움;font-size: 12px;font-weight: bold;color: #3574cb;' align='left'>"
					+"			Creating [<span id='jpvProgressPage' style='color: #FF6600;'> </span>] <span id='jpvProgressMsg'>page.</span>"
					+"		</td>"
					+"		<td width='15'></td>"
					+"		</tr>"
					+"		<tr>"
					+"		<td height='7'></td>"
					+"		<td></td>"
					+"		<td></td>"
					+"		</tr>"
					+"		</table>"
					+"	</td>"
					+"	</tr>"
					+"	<tr>"
					+"	<td bgcolor='#3399FF' height='5'></td>"
					+"	<td></td>"
					+"	<td bgcolor='#99CCFF'></td>"
					+"	</tr>"
					+"	</table>"
					+"</div>";

	//node type definition >>> 절대 접근 금지~!!!
	this.ELEMENT_NODE	= 1;
	this.ATTRIBUTE_NODE	= 2;
	this.TEXT_NODE		= 3;

	//출력물 생성 완료 후 실행할 스크립function명
	this.initfunc		= "";
	this.align			= "center";

	/*-----------------------------------------------------------------------------
	* JPrintViewer 의 페이징 처리 시작
	*
	* param count : 0
	* return void
	*
	* ex) jpviewer.start();
	-----------------------------------------------------------------------------*/
	this.start			= function(){
		try{
			try{
				var btn	= document.getElementById(this.rmBtn);
				btn.parentNode.removeChild(btn);
			}catch(e){}

			//content부의 내용을 iframe로 옮기고 body부를 비운다.
			this.jpvRealDiv		= document.getElementById(this.content);

			var jpvDivTag		= "<span id='jpvTempDiv' style='display:none'></span>";
			var printScreen		= this.jpvRealDiv.innerHTML;
			document.body.insertAdjacentHTML("beforeEnd",jpvDivTag);
			this.jpvTempDiv		= document.getElementById("jpvTempDiv");
			this.jpvTempDiv.insertAdjacentHTML("afterBegin", printScreen);

			this.jpvRealDiv.innerHTML	= "";

			//출력페이지 생셩 진행바를 보여준다.
			document.body.insertAdjacentHTML("afterBegin", this.progressStr);
			this.progress();
		}catch(e){
			if(this._err)
				alert("JPrintViewer.start error : "+ e +" - "+ e.description);
		}
	}

	/*-----------------------------------------------------------------------------
	* 출력페이지 생성이 완료되었다면 페이지번호를 체크한다
	*
	* param count : 0
	* return void
	*
	* ex) this.complete();
	-----------------------------------------------------------------------------*/
	this.complete		= function(){
		try{
			//모든페이지를 작성 완료햇다면 종료
			document.getElementById("jpvProgressMsg").innerHTML	= "page completed.";

			var cPageArr	= document.all(this.cPageId);
			var tPageArr	= document.all(this.tPageId);
			var kCPageArr	= document.all(this.kCPageId);
			var kTPageArr	= document.all(this.kTPageId);

			if(cPageArr==null)				{cPageArr	= new Array();}
			if(tPageArr==null)				{tPageArr	= new Array();}
			if(kCPageArr==null)				{kCPageArr	= new Array();}
			if(kTPageArr==null)				{kTPageArr	= new Array();}

			if(cPageArr.length==undefined)	{cPageArr	= new Array(cPageArr);}
			if(tPageArr.length==undefined)	{tPageArr	= new Array(tPageArr);}
			if(kCPageArr.length==undefined)	{kCPageArr	= new Array(kCPageArr);}
			if(kTPageArr.length==undefined)	{kTPageArr	= new Array(kTPageArr);}

			for(var i=0;i<cPageArr.length;i++){
				cPageArr[i].innerHTML	= (i+1)+"";
			}
			for(var i=0;i<kCPageArr.length;i++){
				kCPageArr[i].innerHTML	= this.pageStrArr[i];
			}
			for(var i=0;i<tPageArr.length;i++){
				tPageArr[i].innerHTML	= (this.pageNo-1)+"";
			}
			for(var i=0;i<kTPageArr.length;i++){
				if(this.pageNo==2)
					kTPageArr[i].innerHTML	= "한";
				else
					kTPageArr[i].innerHTML	= this.pageStrArr[this.pageNo-2];
			}

			document.body.removeChild(this.jpvTempDiv);
			document.body.disabled	= false;
			setTimeout(this.name+".clear()",1000);
		}catch(e){
			if(this._err)
				alert("JPrintViewer.complete error : "+ e +" - "+ e.description);
		}
	}

	/*-----------------------------------------------------------------------------
	* 출력페이지 생성이 완료되었다면
	* 진행바를 제거한다.
	*
	* param count : 0
	* return void
	*
	* ex) this.clear();
	-----------------------------------------------------------------------------*/
	this.clear		= function(){
		try{
			document.body.removeChild(document.getElementById("jpvProgress"));
			if(this.initfunc!=""){
				eval(this.initfunc);
			}
		}catch(e){
			if(this._err)
				alert("JPrintViewer.clear error : "+ e +" - "+ e.description);
		}
	}

	/*-----------------------------------------------------------------------------
	* 출력페이지 생성작업을 실행한다.
	*
	* param count : 0
	* return void
	*
	* ex) this.progress();
	-----------------------------------------------------------------------------*/
	this.progress		= function(){
		try{
			document.getElementById("jpvprogressPage").innerHTML	= this.pageNo;
			setTimeout(this.name+".makeNewPage()",100);
		}catch(e){
			if(this._err)
				alert("JPrintViewer.progress error : "+ e +" - "+ e.description);
		}
	}

	/*-----------------------------------------------------------------------------
	* 새로운 페이지를 생성한다.
	*
	* param count : 0
	* return void
	*
	* ex) this.makeNewPage();
	-----------------------------------------------------------------------------*/
	this.makeNewPage	= function(){
		try{
			document.getElementById("jpvprogressPage").innerHTML	= this.pageNo;

			var pageStr		= "\n<table align='"+this.align+"'><tr><td>"
							+this.header
							+"</td></tr><tr><td>"
							+"<div id='jpvPage_"+(this.pageNo++)+"'"
							+" style='"+this.pageStyle
							+";align:left"
							+";width:"+this.pageWidth+"px"
							+";height:"+this.pageHeight+"px;'"
							+"></div>\n"
							+"</td></tr><tr><td>"
							+this.footer
							+"</td></tr></table>\n";

			this.jpvRealDiv.insertAdjacentHTML("beforeEnd", pageStr);
			this.cDiv		= document.getElementById("jpvPage_"+(this.pageNo-1));
		}catch(e){
			if(this._err)
				alert("JPrintViewer.makeNewPage error : "+ e +" - "+ e.description);
		}

		this.printContent();

		//출력물 생성할 content가 남아잇다면 다음페이지 작업 진행
		if(this.jpvTempDiv.hasChildNodes()){
			if(this.pageNo>this.maxPageNo){
				alert("Page overflowed. Max page=["+this.maxPageNo+"].\n\nCheck max page variable [JPrintViewer.maxPageNo].");
				this.complete();
				return;
			}
			this.jpvRealDiv.insertAdjacentHTML("beforeEnd", this.pageBreak);
			setTimeout(this.name+".makeNewPage()",100);
		}else{
			//모든페이지를 작성 완료햇다면 종료
			document.getElementById("jpvProgressMsg").innerHTML	= "Work completly.";
			this.complete();
		}
	}

	/*-----------------------------------------------------------------------------
	* 새로생성한 페이지에 content를 삽입한다.
	*
	* param count : 0/2
	* param 1 : element	- 원본 node
	* param 1 : element	- 복사한 node
	*
	* return boolean : overflow 여부
	*
	* ex) this.printContent();
	-----------------------------------------------------------------------------*/
	this.printContent	= function(){
		if(arguments.length!=2){
			//기본으로 jpvTempDiv의 내용을 원본으로
			//현재 작성중 페이지div를 복사타겟으로 잡는다.
			arguments	= new Array(this.jpvTempDiv,this.cDiv);
		}
		var spTagArr	= this.spTag.split("/",999);

		var inFull		= true;
		var nodes		= arguments[0].childNodes;

		for(var i=0;i<nodes.length;i++){
			inFull		= true;
			//자식노드가 있을 경우 self call
			if(nodes[i].hasChildNodes()){
				for(var j=0;j<spTagArr.length;j++){
					if(nodes[i].getElementsByTagName(spTagArr[j]).length>0){
						inFull	= false;
						break;
					}
				}
			}

			if(nodes[i].nodeName==this.jpvBreakTag.toUpperCase().remove("<",">"," ")){
				arguments[0].removeChild(nodes[i--]);
				return true;
			}

			var nNode		= null;

			//TBODY가 나오면 자식 TR정보를 분석한다.
			if( nodes[i].nodeName=="TBODY" ){
				this.saveRowspan(nodes[i]);
			}

			if(inFull){
				arguments[1].appendChild(nNode = nodes[i].cloneNode(true));
				//content에 통으로 삽입
				if( this.isOver() ){
					//페이지가 넘쳣다면
					//삽입된 element를 제거하고 다음페이지로 이동
					//주의)tr입력중 넘쳣다면 현재 tr을 rowspan처리된 넘으로 바꿔준다.
					if(nodes[i].nodeName=="TR"){
						var cTdArr	= this.getNodesByTagName(nodes[i],"TD");
						for(var a=0;a<cTdArr.length;a++){
							nodes[i].removeChild(cTdArr[a]);
						}
						var nTdArr	= this.jpvRowspanObj[nodes[i].getAttribute("JPVROWID")];
						for(var a=0;a<nTdArr.length;a++){
							if(nTdArr[a]==null){
								continue;
							}
							nodes[i].appendChild(nTdArr[a].cloneNode(true));
						}
					}
					arguments[1].removeChild(nNode);
					return true;
				}
			}else{
				nNode	= this.cloneEmptyNode(nodes[i]);
				arguments[1].appendChild(nNode);

				//자식노드로 분리태크가 있고 삽입작업중 페이지가 넘쳣다면
				//다음페이지로 이동
				if( this.printContent(nodes[i],nNode) ){
					return true;
				}
			}
			//정상적으로 삽입되었다면 해당 elementfmf iframe로 제거
			//col,colgroup와 같은 공통 태그는 삭제하지 않는다.
			if(this.notRemoveTag.indexOf("/"+nodes[i].nodeName+"/")<0){
				if( nodes[i].nodeName=="TR" ){
					//TR이 끝나는 시점에 저장rowspan 데이터도 삭제한다.
					this.removeRowSpan(nodes[i].getAttribute("JPVROWID"));
				}
				arguments[0].removeChild(nodes[i--]);
			}
		}
		return false;
	}


	/*-----------------------------------------------------------------------------
	* 입력받은 element의 자식을 모두 제거한 새로운 element를 생성한다.
	*	attributes는 잔존하게된다.
	*
	* param count : 1
	* param 1 : element	- 복사할 대상 element
	* return element	- 복사한 빈 element
	*
	* ex) this.cloneEmptyNode(oldNode);
	-----------------------------------------------------------------------------*/
	this.cloneEmptyNode	= function(){
		var nNode		= null;
		if(arguments[0].nodeType==this.TEXT_NODE){
			nNode		= document.createTextNode(arguments[0].nodeValue);
		}else{
			nNode			= document.createElement(arguments[0].nodeName);
			var attrs		= arguments[0].attributes;

			for(var i=0;attrs!=null&&i<attrs.length;i++){
				if(attrs[i].value!=null && attrs[i].value!='null' && attrs[i].value!=""){
					nNode.setAttribute(attrs[i].name,attrs[i].value);
				}else{
					nNode.removeAttribute(attrs[i].name);
				}
			}
			nNode.setAttribute("disabled",false);
		}
		return nNode;
	}

	/*-----------------------------------------------------------------------------
	* tbody부가 나오면 페이지넘김을 대비하여 미리 rowspan처리를 한 tr element저장한다.
	*
	* param count : 1
	* param 1 : tbody element	- tbody
	*
	* return void
	*
	* ex) this.saveRowspan(tbodyNode);
	-----------------------------------------------------------------------------*/
	var jpvTbId			= 0;
	this.saveRowspan	= function(){
		if(arguments[0].nodeName!="TBODY"){
			return;
		}
		if(arguments[0].getAttribute("JPVTBID")==null){
			arguments[0].setAttribute("JPVTBID",jpvTbId++);
		}else{
			return;
		}

		//rowspan정보를 담고잇는 연관배열
		var rowSpanArr	= new Array();

		var tdIdx		= 0;

		var trs			= this.getNodesByTagName(arguments[0],"TR");
		var tds			= null;


		for(var i=0;i<trs.length;i++){
			if(trs[i].getAttribute("JPVROWID")==null){
				trs[i].setAttribute("JPVROWID",jpvTbId+"_"+i);
			}

			tds			= this.getNodesByTagName(trs[i],"TD");

			var tdArr	= new Array();
			tdIdx		= 0;
			for(var j=0;j<tds.length;j++){

				//상단에  rowspan이 있다면 삽입처리
				if(rowSpanArr[tdIdx]!=null && rowSpanArr[tdIdx].getAttribute("JPVROWSPAN")>1){
					rowSpanArr[tdIdx].setAttribute("JPVROWSPAN",(rowSpanArr[tdIdx].getAttribute("JPVROWSPAN")*1)-1);
					//rowspan td삽입
					tdArr[tdIdx]= rowSpanArr[tdIdx].cloneNode(true);
					//삽입된 td의 rowspan 셋팅
					tdArr[tdIdx].setAttribute("rowSpan",tdArr[tdIdx].getAttribute("JPVROWSPAN"));
					tdArr[tdIdx].removeAttribute("JPVROWSPAN");

					//새로운 td가 추가되었으므로 tds의 length를 늘려주고 재배치 한다.
					var oriLen		= tds.length;
					for(var k=oriLen-1;k>=tdIdx;k--){
						tds[k+(tdArr[tdIdx].getAttribute("colSpan")*1)]	= tds[k];
					}
					tds[tdIdx]		= tdArr[tdIdx];

					//colspan이 있을 경우 다음 td의 절대 죄표를 수정해준다.
					/*
					if(tdArr[tdIdx].getAttribute("colSpan")>1){
						tdIdx	+= (tdArr[tdIdx].getAttribute("colSpan")*1);
					}else{
						tdIdx++;
					}
					*/
				}
				tdArr[tdIdx]	= tds[j].cloneNode(true);

				//rowspan이 나온다면~!!!저장한다.
				if(tds[j].getAttribute("rowSpan")>1){
					rowSpanArr[tdIdx]	= tds[j].cloneNode(true);
					rowSpanArr[tdIdx].setAttribute("JPVROWSPAN",tds[j].getAttribute("rowSpan"));
				}
				//colspan이 나올경우 다음 td의 절대 죄표를 수정해준다.
				if(tds[j].getAttribute("colSpan")>1){
					tdIdx	+= (tds[j].getAttribute("colSpan")*1);
				}else{
					tdIdx++;
				}
			}

			//뒤쪽에 붙은 rowspan처리
			if(tdIdx<rowSpanArr.length){

				for(var j=tdIdx-1;j<rowSpanArr.length;j++){


					//상단에  rowspan이 있다면 삽입처리
					if(rowSpanArr[tdIdx]!=null && rowSpanArr[tdIdx].getAttribute("JPVROWSPAN")>1){
						rowSpanArr[tdIdx].setAttribute("JPVROWSPAN",(rowSpanArr[tdIdx].getAttribute("JPVROWSPAN")*1)-1);

						tdArr[tdIdx]= rowSpanArr[tdIdx].cloneNode(true);
						tdArr[tdIdx].setAttribute("rowSpan",tdArr[tdIdx].getAttribute("JPVROWSPAN"));
						tdArr[tdIdx].removeAttribute("JPVROWSPAN");
						//colspan이 있을 경우 다음 td의 절대 죄표를 수정해준다.
						if(tdArr[tdIdx].getAttribute("colSpan")>1){
							tdIdx	+= (tdArr[tdIdx].getAttribute("colSpan")*1);
						}else{
							tdIdx++;
						}
					}
				}
			}
			this.jpvRowspanObj[jpvTbId+"_"+i]	= tdArr;
		}
//		this.displayTest();
	}

	/*-----------------------------------------------------------------------------
	* 재처리된 테이블 정보를 보기위한 테스트 메소드
	*
	* param count : 0
	*
	* return void
	*
	* ex) this.displayTest();
	-----------------------------------------------------------------------------*/
	this.displayTest	= function(){
		document.body.insertAdjacentHTML("beforeEnd", "<span id='test'></span>");
		var table	= document.createElement("TABLE");
		document.getElementById("test").appendChild(table);
		var tbody	= document.createElement("TBODY");
		table.appendChild(tbody);

		for(key in this.jpvRowspanObj){
			var tr	= document.createElement("TR");
			tbody.appendChild(tr);
			var tdarr	= this.jpvRowspanObj[key];

			for(var j=0;j<tdarr.length;j++){
				tr.appendChild(tdarr[j].cloneNode(true));
			}
		}
		alert(document.getElementById("test").innerHTML);
		document.body.removeChild(document.getElementById("test"));
	}

	/*-----------------------------------------------------------------------------
	* 테이블이 끝나면 저장된 rowspan정보도 삭제한다.
	*
	* param count : 1
	* param 1 : TBODY element	- TBODY
	*
	* return void
	*
	* ex) this.removeRowSpan(tbodyNode);
	-----------------------------------------------------------------------------*/
	this.removeRowSpan	= function(){
		var newMap		= new Object();
		for(key in this.jpvRowspanObj){
			if(key!=arguments[0]){
				newMap[key]	= this.jpvRowspanObj[key];
			}
		}
		this.jpvRowspanObj	= newMap;
	}
	/*-----------------------------------------------------------------------------
	* 해당 페이지(div)가 overflow 되었는지 여부 판별
	*
	* param count : 0
	* return boolean
	*
	* ex) this.isOver();
	-----------------------------------------------------------------------------*/
	this.isOver			= function(){
		try{
			if( this.cDiv.scrollHeight > this.pageHeight ){
				return true;
			}
			return false;
		}catch(e){
			if(this._err)
				alert("JPrintViewer.isOver error : "+ e +" - "+ e.description);
		}
	}
	/*-----------------------------------------------------------------------------
	* 1차 자식노드 중 특정 태그명을 가지는 노드 목록 반환
	*
	* param count : 2
	* param 1 : 부모 element
	* param 2 : 자식 element tagname
	*
	* return array
	*
	* ex) this.getNodesByTagName(tbodyNode,"TR");
	-----------------------------------------------------------------------------*/
	this.getNodesByTagName	= function(){
		var nodes	= new Array();
		var	num		= 0;
		var list	= arguments[0].childNodes;
		for(var i=0;i<list.length;i++){
			if(list[i].nodeType==this.ELEMENT_NODE && list[i].nodeName==arguments[1]){
				nodes[num++]	= list[i];
			}
		}
		return nodes;
	}
}

//-->
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    